﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraBars;
using System.Data.Linq;
using QuanLyThuVien.BUS;
using System.Runtime.InteropServices;
using System.Linq;
using QuanLyThuVien.DTO;



namespace QuanLyThuVien
{
    public partial class frmThuThu : DevExpress.XtraBars.Ribbon.RibbonForm
    {
        public frmThuThu()
        {
            InitializeComponent();
           
        } 
        
        // ham nhan data tu form Dang Nhap
        string ma;
        frmDangnhap frmDNhap = new frmDangnhap();
        public void funData(TextBox txtForm1, frmDangnhap frmDN)
        {
           ma = txtForm1.Text;
            frmDNhap = frmDN;
        }


         private void frmThuthu_Load(object sender, EventArgs e)
        {
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

             int manv = int.Parse(ma);
             NhanVien nv = NhanVienBUS.ThongTin_NhanVien(manv);
             string tennv = nv.HoTenNhanVien;
             txtTenDangNhap.Text = tennv;

             tbNguoiLap.Text = txtTenDangNhap.Text;

            cbbLoaidocgia.DisplayMember = "TenLoaiDocGia";
            cbbLoaidocgia.ValueMember = "MaLoaiDocGia";
            cbbLoaidocgia.DataSource = LoaiDocGiaBUS.LoaiDG();

            dgdanhsachdocgia.DataSource = DocGiaBUS.LayDSDG();
            dgdanhsachdocgia.Columns["Ma Loai Doc Gia"].Visible = false;
            dgdanhsachdocgia.Rows[0].Selected = false;

            txtNguoiGhiNhan.Text = txtTenDangNhap.Text;

            DgMattam.DataSource = GhiNhanMatSachBUS.GetALLGNMS().DataSource;
        }

        private void lblThoat_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            this.Close();
        }

        private void lblTimSach_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmTimKiemSach frm = new frmTimKiemSach();
            frm.ShowDialog();
        }

     

        private void btnLapthe_Click(object sender, EventArgs e)
        {
            dtNgayHetHan.Visible = true;
            //kiem tra thong tin truoc khi tien hanh lap the

            if (tbhoten.Text == null || tbhoten.Text == "")
            {
                MessageBox.Show("Điền họ tên", "thông báo");
                return;
            }
            if (tbdiachi.Text == null || tbdiachi.Text == "")
            {
                MessageBox.Show("Điền Địa chỉ", "thông báo");
                return;
            }
            if (tbemail.Text == null || tbemail.Text == "")
            {
                MessageBox.Show("Điền email", "thông báo");
                return;
            }
            
            // them doc gia moi vao database
            DocGiaDTO the = new DocGiaDTO();
            the.HoTenDocGia1 = tbhoten.Text;
            the.NgaySinh1 = dtngaysinh.Value.Date;
            the.DiaChi1 = tbdiachi.Text;
            the.Email1 = tbemail.Text;
            the.NgayLapThe1 = dtngaylapthe.Value.Date;
            //ngay het han
            DateTime ngayLapThe = dtngaylapthe.Value.Date;
            DateTime ngayHetHan = ngayLapThe.AddMonths(6);
            the.NgayHetHan1 = ngayHetHan;
          
            the.MaLoaiDocGia1 = int.Parse(cbbLoaidocgia.SelectedValue.ToString());

            // ma nhan vien lap the
            int manv = int.Parse(ma);
            the.MaNV1 = manv;

            DocGiaBUS.LapTheDG(the);
            dgdanhsachdocgia.DataSource = DocGiaBUS.LayDSDG();

            MessageBox.Show("Lập thẻ thành công.", "THÔNG BÁO!!!");
        }

        int madg = 0;
        private void dgdanhsachdocgia_Click(object sender, EventArgs e)
        {
            dtNgayHetHan.Visible = true;
           try
            {
                
                DataGridViewRow cot = dgdanhsachdocgia.CurrentRow;
                madg = int.Parse(cot.Cells["Mã Độc Giả"].Value.ToString());
                tbhoten.Text = cot.Cells["Họ Tên Độc Giả"].Value.ToString();
                dtngaysinh.Text = cot.Cells["Ngày Sinh"].Value.ToString();
                tbdiachi.Text = cot.Cells["Địa Chỉ"].Value.ToString();
                tbemail.Text = cot.Cells["Email"].Value.ToString();
                dtngaylapthe.Text = cot.Cells["Ngày Lập Thẻ"].Value.ToString();
                dtNgayHetHan.Text = cot.Cells["Ngày Hết Hạn"].Value.ToString();
                cbbLoaidocgia.SelectedValue = int.Parse(cot.Cells["Ma Loai Doc Gia"].Value.ToString());
                tbNguoiLap.Text = cot.Cells["Người Lập Thẻ"].Value.ToString();
              
            }
            catch { }
        }

        // cap nhat thong tin cua 1 doc gia
        private void btnCapNhat_DG_Click(object sender, EventArgs e)
        {
            if (tbhoten.Text == null || tbhoten.Text == "")
            {
                MessageBox.Show("Điền họ tên", "thông báo");
                return;
            }
            if (tbdiachi.Text == null || tbdiachi.Text == "")
            {
                MessageBox.Show("Điền Địa chỉ", "thông báo");
                return;
            }
            if (tbemail.Text == null || tbemail.Text == "")
            {
                MessageBox.Show("Điền email", "thông báo");
                return;
            }

            if (madg == 0)
            {
                MessageBox.Show("Độc giả này không có", "thông báo");
                return;
            }
            DocGiaDTO dg = new DocGiaDTO();

            dg.MaDocGia1 = madg;
            dg.HoTenDocGia1 = tbhoten.Text;
            dg.NgaySinh1 = dtngaysinh.Value.Date;
            dg.DiaChi1 = tbdiachi.Text;
            dg.Email1 = tbemail.Text;
            dg.NgayLapThe1 = dtngaylapthe.Value.Date;
            dg.MaLoaiDocGia1 = int.Parse(cbbLoaidocgia.SelectedValue.ToString());
            DocGiaBUS.CapNhat_DocGia(dg);

            dgdanhsachdocgia.DataSource = DocGiaBUS.LayDSDG();

            MessageBox.Show("Cập nhật thành công.", "THÔNG BÁO!!!");
        }

        // reset lai 
        private void btnRe_click(object sender, EventArgs e)
        {
            tbhoten.Text = null;
            dtngaysinh.Text = null;
            tbdiachi.Text = null;
            tbemail.Text = null;
            dtngaylapthe.Text = null;
            cbbLoaidocgia.Text = null;

            tbNguoiLap.Text = txtTenDangNhap.Text;
            dtNgayHetHan.Visible = false;
          //  madg = 0;
        }



        // LAP PHIEU MUON SACH

        private void btnLapPhieu_Click(object sender, EventArgs e)
        {
            tbMaDGMuon.ReadOnly = false;
            if (tbMaDGMuon.Text == null || tbMaDGMuon.Text == "")
            {
                MessageBox.Show("Bạn chưa điền mã độc giả", "thông báo");
                return;
            }
            if (tbhovaten.Text == null || tbhovaten.Text == "")
            {
                MessageBox.Show("Bạn chưa điền họ tên", "thông báo");
                return;
            }
            if (tbSach.Text == null || tbSach.Text == "")
            {
                MessageBox.Show("Bạn chưa điền mã sách", "thông báo");
                return;
            }
            bool kt = false;
            foreach (DataGridViewRow row in dgdanhsachmuon.Rows)
            {
                if (row.Cells[1].Value != null)
                    kt = true;
            }
            if (!kt)
            {
                MessageBox.Show("Bạn chưa add sách vào Danh sách Sách", "thông báo");
                return;
            }
            NorthwindDataContext cnn = new NorthwindDataContext();
           
            //thêm phiếu mượn vào cơ sở dữ liệu
            PhieuMuonDTO m = new PhieuMuonDTO();
            m.MaDocGia1 = int.Parse(tbMaDGMuon.Text);
            m.NgayMuon1 = dtngaymuon.Value.Date;
            m.MaNV1 = int.Parse(ma);
            PhieuMuonBUS.LapPhieuMuon(m);

            //thêm chi tiết phiếu mượn
            int MaPhieu = PhieuMuonBUS.LayMaPhieuMuon();
            foreach (DataGridViewRow row in dgdanhsachmuon.Rows)
            {
                ChiTietPhieuMuonDTO ct = new ChiTietPhieuMuonDTO();
                ct.MaPhieuMuon1 = MaPhieu;
                if (row.Cells[1].Value != null && row.Cells[1].Value.ToString() != "")
                {
                    ct.MaSach1 = int.Parse(row.Cells[1].Value.ToString());
                    ct.TinhTrangTra1 = 0;
                    ChiTietPhieuMuonBUS.ChiTietMuon(ct);

                    DataTable dt = new DataTable();
                    dt = SachBUS.XuLyMuon_Sach(int.Parse(row.Cells[1].Value.ToString()));
                    SachDTO sa = new SachDTO();
                    for(int j = 0; j<dt.Rows.Count; j++)
                    {
                        sa.SoLuong1 = int.Parse(dt.Rows[j]["SoLuong"].ToString());
                        sa.Masach1 = int.Parse(dt.Rows[j]["MaSach"].ToString());
                        sa.SoSachMuon1 = int.Parse(dt.Rows[j]["SoSachMuon"].ToString())+ 1;
                    }
                    SachBUS.SuaSoLuong(sa);
                }
            }
            MessageBox.Show("them thanh cong", "thong bao");
            btnLapPhieu.Enabled = false;
        }

        private void btnHuybo_Click(object sender, EventArgs e)
        {
            tbMaDGMuon.Text = null;
            tbhovaten.Text = null;
            dtngaymuon.Text = null;
            tbSach.Text = null;
            foreach (DataGridViewRow row in dgdanhsachmuon.Rows)
            {
                row.Cells[0].Value = null;
                row.Cells[1].Value = null;
                row.Cells[2].Value = null;
                row.Cells[3].Value = null;
                row.Cells[4].Value = null;
            }

            btnLapPhieu.Enabled = true;
            CheckSachMuon.Enabled = false;
        }

        //kiem tra xem cac dieu kien tren ma doc gia : the co qua han khong, co sach muon qua han, muon du 5 cuon chua.
        private void btncheck_Click(object sender, EventArgs e)
        {
            if(tbMaDGMuon.Text == "")
            {
                MessageBox.Show("Nhập mã độc giả", "thông báo");
                return;
            }
            tbMaDGMuon.ReadOnly = true;
            //1. Kiểm tra thẻ còn hạn hay hết hạn
            int madg = int.Parse(tbMaDGMuon.Text);
            DocGia dg = DocGiaBUS.ThongTin_DocGia(madg);
            if (dg.HoTenDocGia == null)
            {
                MessageBox.Show("Không tồn tại độc giả này, vui lòng kiểm tra lại","Thông Báo");
                tbMaDGMuon.Text = "";
                return;
            }

            if ((DateTime.Now.Date - dg.NgayHetHan.Value.Date).TotalDays > 0)
            {
                MessageBox.Show("Thẻ Quá Hạn");
                btnLapPhieu.Enabled = false;
                CheckSachMuon.Enabled = false;
                return;
            }
            else
            {
         //       MessageBox.Show("Thẻ Còn Hạn");
                btnLapPhieu.Enabled = true;
                CheckSachMuon.Enabled = true;
            }


             if (dg == null)
            {
                MessageBox.Show("Không có độc giả này. Vui lòng kiểm tra lại!!", "thong bao");
                return;
            }
            else
            {
                tbhovaten.Text = dg.HoTenDocGia.ToString();
            }
           
             //2. kiem tra co sach muon qua han hay khong
             DataTable dt = ChiTietPhieuMuonBUS.DS_SachMuon(madg);
             if (int.Parse(dt.Rows[0]["Count_SachQuaHan"].ToString()) > 0)
             {
                 MessageBox.Show("Có sách mượn quá hạn.");
                 btnLapPhieu.Enabled = false;
                 CheckSachMuon.Enabled = false;
                 tbMaDGMuon.ReadOnly = false;
                 tbMaDGMuon.Text = "";
                 return;
             }

             else
             {
             //    MessageBox.Show("khong co sach muon qua han");
                 //btnLapPhieu.Enabled = true;
                 //CheckSachMuon.Enabled = true;
             }
                

             // kiem tra co 5 cuon sach da muon ma chua tra hay chua
             if (int.Parse(dt.Rows[0]["Count_SachChuaTra"].ToString()) == 5)
             {
                 MessageBox.Show("Đã mượn đủ 5 cuốn sách . Không cho mượn thêm nữa.");
                 btnLapPhieu.Enabled = false;
                 CheckSachMuon.Enabled = false;
                 return;
             }

             else
             {
               //  MessageBox.Show("Chưa mượn đủ 5 cuốn. Có thể mượn tiếp.");
                 //btnLapPhieu.Enabled = true;
                 //CheckSachMuon.Enabled = true;
 
             }

             btnLapPhieu.Enabled = true;
             CheckSachMuon.Enabled = true;

        }


        //
        private void btnchecktra_Click(object sender, EventArgs e)
        {
            if (tbMaDGTra.Text == "")
            {
                MessageBox.Show("Điền mã độc giả","thông báo");
                return;
            }
            string MaLuu = tbMaDGTra.Text;
            btncancel_Click(sender, e);
            tbMaDGTra.Text = MaLuu;
            NorthwindDataContext cnn = new NorthwindDataContext();

            //Lấy ra tên độc giả
            
            string ten = DocGiaBUS.LayTenDocGia(int.Parse(tbMaDGTra.Text));

            if (ten == null)
            {
                MessageBox.Show("Khong co Ma Doc Gia nay, vui long kiem tra lai!!", "thong bao");
                return;
            }
            MessageBox.Show("Độc giả có trong hệ thống.");
            tbhotennguoitra.Text = ten;
            //lấy ra số tiền độc giả nợ
            try
            {
                tbtienno.Text = "0";
                double tienno = SoGhiNoBUS.LayTongNo(int.Parse(tbMaDGTra.Text));
                tbtienno.Text = tienno.ToString();
            }
            catch { }
        }
        //phan nay thuoc tab lap phieu muon

         private void CheckSach_Click(object sender, EventArgs e)
        {
            if (tbSach.Text == "")
            {
                MessageBox.Show("nhập mã sách","thông báo");
                return;
            }

            foreach (DataGridViewRow row in dgdanhsachmuon.Rows)
            {
                if (row.Cells[1].Value != null)
                {
                    if (row.Cells[1].Value.ToString() == tbSach.Text)
                    {
                        MessageBox.Show("Bạn đã add cuốn sách này rồi", "Thông báo");
                        return;
                    }
                }
            }
            NorthwindDataContext cnn = new NorthwindDataContext();

            //1.kiểm tra xem độc giả này đã từng mượn cuốn sách này nhưng chưa trả hay chưa?
            int madg = int.Parse(tbMaDGMuon.Text);
            int maSach = int.Parse(tbSach.Text);
            DataTable dt = ChiTietPhieuMuonBUS.DS_SachMuonChuaTra(madg);
            int coMuon = 0; // sach chua muon hay muon nhung tra roi
            for (int k = 0; k < dt.Rows.Count; k++)
            {
                if (int.Parse(dt.Rows[k]["MaSach"].ToString()) == maSach)
                {
                    coMuon = 1; // muon roi nhung chua tra
                }
            }

             //kiem tra co muon
            if (coMuon == 0)
            {
                MessageBox.Show("Cuốn sách này chưa được mượn");
            }
            else
            {
                MessageBox.Show("Cuốn sách này độc giả mượn rồi và chưa trả. Không cho mượn .");

                return;
            }

            //2.kiểm tra cuốn sách muốn mượn có trong kho không
            int x = int.Parse(tbSach.Text);
            DataTable dt2 = new DataTable();
            dt2 = SachBUS.danhsachsach(x);
            if (dt2.Rows.Count == 0)
            {
                MessageBox.Show("sach nay hien khong co trong kho", "thong bao");
                return;
            }
            int i = 1;
            int sol = int.Parse(dt2.Rows[0]["SoLuong"].ToString()) - int.Parse(dt2.Rows[0]["SoSachMuon"].ToString());
            if (sol == 0)
            {
                MessageBox.Show("sach nay hien trong kho da het", "thong bao");
                return;
            }
            dgdanhsachmuon.Rows.Add();
            foreach (DataGridViewRow row in dgdanhsachmuon.Rows)
            {
                if (row.Cells[1].Value == null)
                {
                    for (int j = 0; j < dt2.Rows.Count;j++ )
                    {
                        
                        row.Cells[2].Value = dt2.Rows[j]["TenSach"].ToString();
                        row.Cells[3].Value = dt2.Rows[j]["TenTheLoai"].ToString();
                        row.Cells[4].Value = dt2.Rows[j]["TenTacGia"].ToString();
                    }
                    row.Cells[1].Value = x;
                    row.Cells[0].Value = i;
                    return;
                }
                i++;
            }
        }
        private void checksachtra_Click(object sender, EventArgs e)
        {
            btnxacnhan.Enabled = true;
            if (tbMaDGTra.Text == ""||tbMaDGTra.Text == null)
            {
                MessageBox.Show("vui lòng điền mã độc giả");
                tbMasachTra.Text = null;
                return;
            }
            if (tbMasachTra.Text == null || tbMasachTra.Text == "")
            {
                MessageBox.Show("vui lòng điền mã sách");
                return;
 
            }

            //kiem tra xem doc gia co muon cuon nay hay khong

         
            DataTable dtMuon = new DataTable();
            int coMuon = 0; //khong muon cuon nay
            dtMuon = ChiTietPhieuMuonBUS.DS_SachMuonChuaTra1(int.Parse(tbMaDGTra.Text));
            for (int k = 0; k < dtMuon.Rows.Count; k++)
            {
                if (int.Parse(dtMuon.Rows[k]["Mã Sách"].ToString()) == int.Parse(tbMasachTra.Text))
                {
                    coMuon = 1; // doc gia muon cuon nay
            
                }

            }

            if (coMuon == 0)
            {
                MessageBox.Show("Độc giả đâu có mượn đâu mà trả.");
                return;
            }
                

                //kiểm tra cuốn sách muốn trả có trong kho không
                //int x = int.Parse(tbMasachTra.Text);
                //DataTable dt2 = new DataTable();
                //dt2 = SachBUS.danhsachsach(x);
                //if (dt2.Rows.Count == 0)
                //{
                //    MessageBox.Show("Độc giả không mượn cuốn này.", "THÔNG BÁO!!!");
                //    return;
                //}
                //  int k = 1;
                //int sol = int.Parse(dt2.Rows[0]["SoLuong"].ToString()) - int.Parse(dt2.Rows[0]["SoSachMuon"].ToString());
                //if (sol == 0)
                //{
                //    MessageBox.Show("sach nay hien trong kho da het", "thong bao");
                //    return;
                //}

                foreach (DataGridViewRow row in dgdanhsachsachtra.Rows)
                {
                    if (row.Cells[1].Value != null)
                    {
                        if (row.Cells[1].Value.ToString() == tbMasachTra.Text)
                        {
                            MessageBox.Show("Bạn đã add cuốn sách này rồi", "Thông báo");
                            return;
                        }
                    }
                }

            NorthwindDataContext cnn = new NorthwindDataContext();
            int mdg = int.Parse(tbMaDGTra.Text);
            int masach = int.Parse(tbMasachTra.Text);

            //kiem tra xem cuon sach nay cuon sach nay da tra chua
            int maCTPM = ChiTietPhieuMuonBUS.LayMaCTPMuon(int.Parse(tbMaDGTra.Text), masach);
            int tt = ChiTietPhieuMuonBUS.TT_Tra(maCTPM);
            if (tt == 1)
            {
                MessageBox.Show("Cuốn sách này độc giả không mượn");
                return;
            }

            //tính tiền phạt kỳ này tại đây? tiền phạt kỳ này bằng tổng tiền phạt các cuốn sách
            if (tbtienphat.Text == "" || tbtienphat.Text == null)
                tbtienphat.Text = "0";
            int tienphatkynay = int.Parse(tbtienphat.Text);

            DataTable dt = new DataTable();
            dt = PhieuMuonBUS.LayNgayMuon(int.Parse(tbMaDGTra.Text), int.Parse(tbMasachTra.Text));
            int i = 1;
            dgdanhsachsachtra.Rows.Add(); 
            foreach (DataGridViewRow row in dgdanhsachsachtra.Rows)
            {
                if (row.Cells[1].Value == null)
                {
                    bool flag = false;
                    for (int j = 0;j<dt.Rows.Count;j++)
                    {
                        DateTime ngayMuon = DateTime.Parse(dt.Rows[j]["NgayMuon"].ToString());            
                        row.Cells[0].Value = i;
                        row.Cells[1].Value = dt.Rows[j]["MaSach"].ToString();
                        row.Cells[2].Value = dt.Rows[j]["NgayMuon"].ToString();
                        int soNgayMuon = int.Parse(((dtngaytra.Value.Date - ngayMuon.Date).TotalDays).ToString());
                        row.Cells[3].Value = soNgayMuon.ToString();
                        //tính tiền phạt mỗi cuốn sách tại đây 
                        //tạm thời để tiền phạt bằng 5000 để code
                      //  row.Cells[4].Value = 5000;
                        //kiem tra xem doc gia nay co muon sach qua 4 ngay khong
                        if ((dtngaytra.Value.Date - ngayMuon.Date).TotalDays > 4)
                        {
                            double tienPhat = (dtngaytra.Value.Date - ngayMuon.Date).TotalDays - 4;
                            row.Cells[4].Value = tienPhat.ToString();
                        }
                        else
                        {
                            row.Cells[4].Value = 0;
                        }
                     

                        //tính tiền phạt kỳ này và tổng nợ
                        tienphatkynay += int.Parse(row.Cells[4].Value.ToString());
                        tbtienphat.Text = tienphatkynay.ToString();
                        tbtongno.Text = (tienphatkynay+int.Parse(tbtienno.Text)).ToString();

                        flag = true;
                    }
                    if (flag == false)
                    {
                        MessageBox.Show("doc gia khong muon cuon sach nay", "thong bao");
                        tbMasachTra.Text = "";
                        tbtienphat.Text = "";
                        tbtongno.Text = "";
                    }

                    return;
                }
                i++;
            }          
        }

        // reset lai tab LAP PHIEU TRA
        private void btncancel_Click(object sender, EventArgs e)
        {
            btnxacnhan.Enabled = true;

            tbMaDGTra.Text = null;
            tbhotennguoitra.Text = null;
            dtngaytra.Text = null;
            tbMasachTra.Text = null;
            tbtienno.Text = null;
            tbtienphat.Text = null;
            tbtongno.Text = null;
            foreach (DataGridViewRow row in dgdanhsachsachtra.Rows)
            {
                row.Cells[0].Value = null;
                row.Cells[1].Value = null;
                row.Cells[2].Value = null;
                row.Cells[3].Value = null;
                row.Cells[4].Value = null;
            }

        }

        //xac nhan lap phieu tra sach
        private void btnxacnhan_Click(object sender, EventArgs e)
        {
            btnxacnhan.Enabled = false;

            if (tbMaDGTra.Text == null ||tbMaDGTra.Text == "")
            {
                MessageBox.Show("Bạn chưa điền mã độc giả", "thông báo");
                return;
            }
            if (tbhotennguoitra.Text == null || tbhotennguoitra.Text == "")
            {
                MessageBox.Show("Bạn chưa điền họ tên độc giả", "thông báo");
                return;
            }
            if (tbMasachTra.Text == null || tbMasachTra.Text == "")
            {
                MessageBox.Show("Bạn chưa điền mã sách trả", "thông báo");
                return;
            }
            if (tbtienno.Text == null || tbtienno.Text == "")
            {
                MessageBox.Show("Bạn chưa điền tiền nợ của độc giả", "thông báo");
                return;
            }
            if (tbtienphat.Text == null || tbtienphat.Text == "")
            {
                MessageBox.Show("Bạn chưa điền tiền phạt của độc giả", "thông báo");
                return;
            }
            if (tbtongno.Text == null || tbtongno.Text == "")
            {
                MessageBox.Show("Bạn chưa tính tổng nợ của độc giả", "thông báo");
                return;
            }
            bool ktra = false;
            foreach (DataGridViewRow row in dgdanhsachsachtra.Rows)
            {
                if (row.Cells[1].Value != null)
                    ktra = true;
            }
            if (!ktra)
            {
                MessageBox.Show("Bạn chưa add sách vào Danh sách Sách", "thông báo");
                return;
            }

            //bên dưới này tiến hành việc tiếp nhận trả sách, bao gồm :
            NorthwindDataContext cnn = new NorthwindDataContext();
            //+ thêm 1 phiếu trả
            PhieuTraDTO p = new PhieuTraDTO();
            p.NgayTra1 = dtngaytra.Value.Date;
            p.TienPhatKyNay1= float.Parse(tbtienphat.Text);//chưa tính được tiền phạt.
            p.TienNo1 = float.Parse(tbtienno.Text);
            int mapm = PhieuMuonBUS.LayMaPM(int.Parse(tbMaDGTra.Text), int.Parse(tbMasachTra.Text));
            p.MaPhieuMuon1 = mapm;
            PhieuTraBUS.LapPhieuTra(p);
            
                  
            foreach (DataGridViewRow row in dgdanhsachsachtra.Rows)
            {
                if (row.Cells[1].Value != null && row.Cells[1].Value.ToString() != "")
                {
                    //+ thêm 1 chi tiết phiếu trả
                    ChiTietPhieuTraDTO ct = new ChiTietPhieuTraDTO();
                    var sql1 = (from pt in cnn.PhieuTras
                                select pt.MaPhieuTra).Max();
                    ct.MaPhieuTra1 = int.Parse(sql1.ToString());
                    int masach = int.Parse(row.Cells[1].Value.ToString());
                    ct.MaChiTietPhieuMuon1 = ChiTietPhieuMuonBUS.LayMaCTPMuon(int.Parse(tbMaDGTra.Text),masach);   
                    ChiTietPhieuTraBUS.ChiTietTra(ct);

                    // them tinh trang tra cho chi tiet phieu muon
                    int maCTPM = ct.MaChiTietPhieuMuon1;
                    ChiTietPhieuMuonBUS.CapNhat_TinhTrangTra(maCTPM);
                     //+ tăng số lượng sách trong kho và giảm số lượng sách mượn

                    DataTable dt = new DataTable();
                    dt = SachBUS.XuLyMuon_Sach(int.Parse(row.Cells[1].Value.ToString()));
                    SachDTO sa = new SachDTO();
                    for (int i = 0;i<dt.Rows.Count;i++)
                    {
                        sa.Masach1 = int.Parse(dt.Rows[i]["MaSach"].ToString());
                        sa.SoSachMuon1 = int.Parse(dt.Rows[i]["SoSachMuon"].ToString()) - 1;
                    }
                    SachBUS.SuaSoLuong(sa);
                }
            }

            //xử lý sổ ghi nợ
            DataTable dt1 = new DataTable();
            dt1 = SoGhiNoBUS.ThongTinSoNo();
               
            //+ thêm 1 phiếu ghi nợ nếu là độc giả mới nợ
            //+ nếu là độc giả cũ nợ thì cập nhật lại tổng nợ của độc giả
            SoGhiNoDTO sgn = new SoGhiNoDTO();
            bool flag = false;
            for (int i = 0; i < dt1.Rows.Count;i++ )
            {
                if (dt1.Rows[i]["MaDocGia"].ToString() == tbMaDGTra.Text)
                {
                    sgn.TongNo1 = int.Parse(tbtongno.Text);
                    sgn.MaDocGia1 = int.Parse(dt1.Rows[i]["MaDocGia"].ToString());
                    sgn.MaSoGhiNo1 = int.Parse(dt1.Rows[i]["MaSoGhiNo"].ToString());
                    SoGhiNoBUS.SuaPhieuNo(sgn);
                    flag = true;
                }
            }
            if (!flag)
            {
                sgn.TongNo1 = int.Parse(tbtongno.Text);
                sgn.MaDocGia1 = int.Parse(tbMaDGTra.Text);
                SoGhiNoBUS.LapPhieuNo(sgn);
            }

            MessageBox.Show("Trả sách thành công.", "thông báo");
        

        }

     
        // Tab GHI_NHAN_MAT_SACH

        private void btnCheck_Click_1(object sender, EventArgs e)
        {
            if (txtMaDG.Text == "")
            {
                MessageBox.Show("Chưa nhập mã độc giả.");
                return;
            }
            txtMaDG.ReadOnly = true;
            int madg = int.Parse(txtMaDG.Text.ToString());
            DocGia dg = DocGiaBUS.ThongTin_DocGia(madg);
            if (dg.HoTenDocGia == null)
            {
                MessageBox.Show("Không tồn tại độc giả này trong hệ thống.");
            }
            else
            {
                pcGhiNhanMatSach.Visible = true;
                dgvDS_SachDaMuon_ChuaTra.DataSource = ChiTietPhieuMuonBUS.DS_SachMuonChuaTra1(madg);
                txtHoTenDG.Text = dg.HoTenDocGia;

            }
        }

        private void dgvDS_SachDaMuon_ChuaTra_SelectionChanged(object sender, EventArgs e)
        {
            if (dgvDS_SachDaMuon_ChuaTra.SelectedRows.Count > 0)
            {
                string tenSach = dgvDS_SachDaMuon_ChuaTra.SelectedRows[0].Cells["Tên Sách"].Value.ToString();
                txtTenSach.Text = tenSach;

                txtTriGia.Text = dgvDS_SachDaMuon_ChuaTra.SelectedRows[0].Cells["Trị Giá"].Value.ToString();

            }
        }

        //ghi nhan 1 phieu mat sach
        private void btnghinhan_Click(object sender, EventArgs e)
        {
            try
            {
                btnghinhan.Enabled = false;
                int tienPhat = int.Parse(txtTienPhat.Text);

                int triGia = int.Parse(txtTriGia.Text);
                if (tienPhat < triGia)
                {
                    MessageBox.Show("Tiền phạt tối thiểu phải bằng trị giá của cuốn sách.");
                    btnghinhan.Enabled = true;
                    return;
                }
                else
                {
                    PhieuGhiNhanMatSach a = new PhieuGhiNhanMatSach();
                    a.NgayGhiNHan = DateTime.Parse(dtngayghinhan.Value.ToString());
                    a.TienPhat = double.Parse(txtTienPhat.Text);
                    a.MaChiTietPhieuMuon = int.Parse(dgvDS_SachDaMuon_ChuaTra.SelectedRows[0].Cells["Ma CTPM"].Value.ToString());
                    a.MaNhanVien = int.Parse(ma);
                    GhiNhanMatSachBUS.Them(a);
                    MessageBox.Show("ĐÃ THÊM PHIẾU GHI NHẬN MẤT SÁCH");

                    int maSach = int.Parse(dgvDS_SachDaMuon_ChuaTra.SelectedRows[0].Cells["Mã Sách"].Value.ToString());
                    SachBUS.GiamSoLuong(maSach, 1);

                    // cap nhat tinh trang tra cho chi tiet phieu muon
                    int maCTPM = int.Parse(dgvDS_SachDaMuon_ChuaTra.SelectedRows[0].Cells["Ma CTPM"].Value.ToString());
                    ChiTietPhieuMuonBUS.CapNhat_TinhTrangTra(maCTPM);

                    DgMattam.DataSource = GhiNhanMatSachBUS.GetALLGNMS().DataSource;
                    DgMattam.Rows[DgMattam.Rows.Count - 1].Selected = true;
                    DgMattam.Rows[0].Selected =false;
                }

            }
            catch
            {
                MessageBox.Show("Có vấn đề trong quá trình thêm ghi nhận mất sách. Vui lòng kiểm tra lại các dữ liệu nhập.", "THÔNG BÁO");
                btnghinhan.Enabled = true;
                return;
            }
             
        }

        private void btnthoat_Click(object sender, EventArgs e)
        {
            Close();
            frmDNhap.Close();
        }

        private void btnreset_Click(object sender, EventArgs e)
        {
            txtMaDG.ReadOnly = false;
            txtHoTenDG.Text = "";
            txtMaDG.Text = "";
            txtTienPhat.Text = "";
            txtTriGia.Text = "";
            btnghinhan.Enabled = true;
            dgvDS_SachDaMuon_ChuaTra.DataSource = null;
            dgvDS_SachDaMuon_ChuaTra.Refresh();
        }

        private void lblHuongdan_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Help.ShowHelp(this, "Huongdan.chm");
        }

    
    }
}
